/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managertelaCadastros;

import classes.Produto;
import classes.Servico;
import classes.ServicoProduto;
import dao.DaoServicoProduto;
import java.util.List;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import managerPesquisa.managerPesquisaServico;
import tabeladedados.TabelaDeDados;
import telaCadastros.CadServicoProduto;

/**
 *
 * @author fumio
 */
public class managerCadServicoProduto implements interfaceManager {

    private TabelaDeDados tabela = null;
    private ServicoProduto servicoProduto;
    private CadServicoProduto cadServicoProduto;
    private DaoServicoProduto daoServicoProduto;
    private Produto produto;
    private Servico servico;

    public managerCadServicoProduto(ServicoProduto cServicoProduto) {
        cadServicoProduto = CadServicoProduto.getInstance(this);
        daoServicoProduto = new DaoServicoProduto();
        if (cServicoProduto == null) {
            servicoProduto = new ServicoProduto();
        } else {
            servicoProduto = cServicoProduto;
        }
        cadServicoProduto.setVisible(true);
    }

    @Override
    public boolean salvar() {
        try {
            if (servicoProduto == null) {
                servicoProduto = new ServicoProduto();
            }

            if (setData()) {
                daoServicoProduto.salvar(servicoProduto);

            }
            atualizarTabela();
            return true;
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return false;
        }
    }

    @Override
    public List carregar() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public boolean setData() {
        try {
            servicoProduto.setPrecoProduto(Double.parseDouble(cadServicoProduto.edtPrecoConsumo.getText()));
            servicoProduto.setProduto(produto);
            servicoProduto.setServico(servico);
            servicoProduto.setQuantidade(Double.parseDouble(cadServicoProduto.edtQuantidade.getText()));
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    @Override
    public void getData() {
        cadServicoProduto.edtCodProduto.setText(servicoProduto.getProduto().toString());
        cadServicoProduto.edtCodServico.setText(servicoProduto.getServico().toString());
        cadServicoProduto.edtPrecoConsumo.setText(servicoProduto.getPrecoProduto().toString());
        cadServicoProduto.edtPrecoCusto.setText(servicoProduto.getProduto().getPrecoCusto().toString());
        cadServicoProduto.edtProduto.setText(servicoProduto.getProduto().getProduto());
        cadServicoProduto.edtQuantidade.setText(servicoProduto.getQuantidade().toString());
        cadServicoProduto.edtServico.setText(servicoProduto.getServico().getDescricao().toString());
    }

    private void atualizarTabela() {
        if (tabela == null) {
            tabela = new TabelaDeDados(cadServicoProduto.tblServicoProduto);

            tabela.adicionarColuna("Serviço", 15);
            tabela.adicionarColuna("Produto", 40);
            tabela.adicionarColuna("Quantidade", 45);
            cadServicoProduto.tblServicoProduto.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
                @Override
                @SuppressWarnings("empty-statement")
                public void valueChanged(ListSelectionEvent e) {
                    if (e.getValueIsAdjusting()) {
                        servicoProduto = (ServicoProduto) tabela.getObjetoSelecionado();
                        getData();
                    }
                    ;
                }
            });

        }
        tabela.removerTodos();
        List<ServicoProduto> dados = daoServicoProduto.consultar(servico.getIdServico().toString(), "IdServico");

        ServicoProduto aux;
        for (int i = 0; i < dados.size(); i++) {
            aux = (ServicoProduto) dados.get(i);
            Object[] linha = {aux.getServico().getDescricao().toString(), aux.getProduto().getProduto().toString(), aux.getQuantidade().toString()};
            tabela.adicionarLinha(linha);
        }
        tabela.setDados(dados);
    }

    public void carregaPesquisaServico() {
        managerPesquisaServico pesquisa = new managerPesquisaServico();
        servico = pesquisa.managerPesquisaServico();
        cadServicoProduto.edtCodServico.setText(servico.getIdServico().toString());
        cadServicoProduto.edtServico.setText(servico.getDescricao());
    }

    public void carregaPesquisaProduto() {
        managerPesquisaServico pesquisa = new managerPesquisaServico();
        servico = pesquisa.managerPesquisaServico();
        cadServicoProduto.edtCodServico.setText(servico.getIdServico().toString());
        cadServicoProduto.edtServico.setText(servico.getDescricao());
    }

    public boolean remover() {
        boolean resultado = daoServicoProduto.remover(servicoProduto);
        atualizarTabela();
        return resultado;
    }
}
